<?php
namespace Home\Controller;
use Think\Controller;
class CommonController extends Controller {
	protected $role = -1;//-1 游客 1 普通用户 2 服务商用户
	private $image_path = "/Public/images/Uploads/";
    protected $auth_result = true;//认证结果
    private $api_image_table = 'dmp_service_apis_image';
    private $api_table = "dmp_service_apis";
    protected $boutique_id = 1;// 精品编号id（数据库录入的数据）
    protected $recommend_id = 2;// 推荐编号id（数据库录入的数据）

	/**
     * 自动执行
     */
    public function __construct()
    {
    	parent::__construct();
        
    	//检查登录
    	$this->checkLogin();
    }

    //所有错误跳转
    public function __call($method,$args){
        if(IS_POST){
            $this->ajaxReturn( array('status'=>404,'msg'=>'400 bad request','data'=>null));
        }else{
            redirect('/');    
        }
    }

    //检测是否登录
    protected function checkLogin(){
    	if(session('nickname') && session('37degree_tag')){
    		if(session('37degree_tag')===myEncrption(C('37DEGREE_HOME_TAG')."-".session('nickname'))){
    			//普通用户
    			$this->role = 1;
    		}else if(session('37degree_tag')===myEncrption(C('37DEGREE_SERVER_TAG')."-".session('nickname'))){
    			//服务商用户
    			$this->role = 2;
    		}
    	}else{
            //session(null);
        }
    }

    //查询用户认证状态重新设置认证状态
    protected function getAuthStatus(){
        $uid = session('uid');
        if($uid){//登录用户
            if(session('37degree_auth_status')!=2){//非认证状态时
                $userModel = D('Users');
                $info = $userModel->getInfo($uid);
                if(!empty($info)) {
                    session('37degree_auth_status',$info['user_auth_status']);
                    session('auth_type',$info['auth_type']);
                }
            }
        }else{
            return false;
        }
    }

    //PHP文件上传处理(单图片上传)
	public function uploadfiy(){
        // define('UPLOAD_DIR', APP_PATH.'/..'.$this->image_path);
        // $img = '';
        // // $img = $_POST['img'];
        // $img = str_replace('data:image/png;base64,', '', $img);
        // $img = str_replace(' ', '+', $img);
        // $data = base64_decode($img);
        // $path_name = UPLOAD_DIR .date('Ymd')."/";
        // $file_name = $path_name. uniqid() . '.png';
        // if(!is_dir($path_name)){
        //     $res=mkdir(iconv("UTF-8", "GBK", $path_name),0777,true);
        //     if(!$res){
        //         $this->ajaxReturn(array('status'=>1002,'data'=>null,'msg'=>'创建图片目录失败') );
        //     }
        // }
        // $success = file_put_contents($file_name, $data);
        // if($success){
        //     $this->ajaxReturn( array('status'=>200,'data'=>$file_name,'msg'=>'上传成功') );
        // }else{
        //     $this->ajaxReturn( array('status'=>1003,'data'=>$file_name,'msg'=>'上传失败') );
        // }
/*         $width = 280;
        $height = 242;
        if(isset($_GET['sz']) && is_numeric($_GET['sz'])){
            $imgs = getimagesize($_FILES['file']['tmp_name']);
            if($imgs[0]!= $width || $imgs[1] != $height){
                $this->ajaxReturn(array('status'=>1002,'data'=>null,'msg'=>'请上传尺寸为280*242px，不超过500k，且格式为jpg或png的图片。') );
            }
        } */

        $upload = new \Think\Upload();// 实例化上传类
        $upload->maxSize   =     524288 ;// 设置附件上传大小
        $upload->exts      =     array('jpg', 'png','jpeg');// 设置附件上传类型
        $upload->rootPath  =     APP_PATH.'/..'.$this->image_path; // 设置附件上传根目录
        $upload->savePath  =     ''; // 设置附件上传（子）目录
        //$upload->callback = $this->checkImageWh($file);        
        $upload->autoSub = true;//
        $upload->subName = array('date', 'Ymd');

        // 上传文件 
        $info   =   $upload->upload();
        if(!$info) {// 上传错误提示错误信息
            $this->ajaxReturn(array('status'=>1002,'data'=>null,'msg'=>$upload->getError()) );
        }else{// 上传成功
            $file_name = $this->image_path.$info['file']['savepath'].$info['file']['savename'];
            $this->ajaxReturn( array('status'=>200,'data'=>$file_name,'msg'=>'上传成功') );
        }


		// $verifyToken = md5('37degree_' . $_POST['timestamp']);
		// if (!empty($_FILES) && $_POST['token'] == $verifyToken) {
		// 	$upload = new \Think\Upload();// 实例化上传类
		//     $upload->maxSize   =     3145728 ;// 设置附件上传大小
		//     $upload->exts      =     array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
		//     $upload->rootPath  =     APP_PATH.'/..'.$this->image_path; // 设置附件上传根目录
		//     $upload->savePath  =     ''; // 设置附件上传（子）目录
		    
		//     $upload->autoSub = true;//
		//     $upload->subName = array('date', 'Ymd');

		//     // 上传文件 
		//     $info   =   $upload->upload();
		//     if(!$info) {// 上传错误提示错误信息
		//         $this->ajaxReturn(array('status'=>1002,'data'=>null,'msg'=>$upload->getError()) );
		//        	//$this->error($upload->getError());
		//     }else{// 上传成功
		//     	$file_name = $this->image_path.$info['Filedata']['savepath'].$info['Filedata']['savename'];
		//         $this->ajaxReturn( array('status'=>200,'data'=>$file_name,'msg'=>'上传成功') );
		//         //$this->success('上传成功！',$info);
		//     }

		// }else{
		// 	$this->ajaxReturn(array('status'=>1001,'data'=>null,'msg'=>'无效上传') );
		// }
		
        
		// Define a destination
		// $targetFolder = '/uploads'; // Relative to the root

		// $verifyToken = md5('unique_salt' . $_POST['timestamp']);

		// if (!empty($_FILES) && $_POST['token'] == $verifyToken) {
		// 	$tempFile = $_FILES['Filedata']['tmp_name'];
		// 	$targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
		// 	$targetFile = rtrim($targetPath,'/') . '/' . $_FILES['Filedata']['name'];
			
		// 	// Validate the file type
		// 	$fileTypes = array('jpg','jpeg','gif','png'); // File extensions
		// 	$fileParts = pathinfo($_FILES['Filedata']['name']);
			
		// 	if (in_array($fileParts['extension'],$fileTypes)) {
		// 		move_uploaded_file($tempFile,$targetFile);
		// 		echo '1';
		// 	} else {
		// 		echo 'Invalid file type.';
		// 	}
		// }
	}

    //剪切图片上传
    public function imageUpload(){
        $image_dir = './Public/images/Uploads/';

        import('Vendor.Crop.CropAvatar');
        $crop = new \CropAvatar($_POST['avatar_src'], $_POST['avatar_data'], $_FILES['avatar_file'],$image_dir);

        $response = array(
          'state'  => 200,
          'message' => $crop -> getMsg(),
          //'result' => "../".$crop -> getResult()
          'result' => substr($crop -> getResult(), 1)//去掉“.”
        );

        echo json_encode($response);
    }

    // public function imagedown(){
    //     $name = $_GET['name'];
    //     $admin_domain = $_GET['domain'];
    //     // echo $admin_domain.$name;die;
    //     $img = file_get_contents($admin_domain.$name);
        
    //     echo $img;die;
    // }

	//个人认证用户信息提交
    protected function addUserAuth($data){

        if(empty($data['user_name']) ){
        	 $this->ajaxReturn( array('status'=>1003,'msg'=>'请输入用户名','data'=>'user_name') );
        }
        
        if(empty($data['identity_cards_no'])){
        	 $this->ajaxReturn( array('status'=>1003,'msg'=>'请输入身份证号码','data'=>'identity_cards_no'));
        }
        
        if(!checkIdcard($data['identity_cards_no'])){
        	 $this->ajaxReturn( array('status'=>1003,'msg'=>'请输入正确的身份证号码','data'=>'identity_cards_no'));
        }
        
        
        if(empty($data['user_mobile'])){
        	$this->ajaxReturn( array('status'=>1003,'msg'=>'请输入手机号码','data'=>'user_mobile')); 
        }
        
        if(!checkMobile($data['user_mobile'])){
        	$this->ajaxReturn( array('status'=>1003,'msg'=>'请输入正确的手机号码','data'=>'user_mobile'));
        }
        
        $data['user_auth_status'] = 1;
        $data['auth_type'] = 1;
        $data['auth_create_time'] = time();//时间
        $UsersModel = M('Users');
        $where['user_email'] = $this->user_email;
        $update_status = $UsersModel->where($where)->save($data);
        if($update_status){
            session('37degree_auth_status',1);//认证提交

            //（todo:同时记录信息到个人history表）
            if(isset($data['auth_id']) && $data['auth_id']){
                $opt_type = 4;//更新提交审核
            }else{
                $opt_type = 1;//新增提交审核
            }
            $UserHistoryModel = D('UserCheckHistory');
            $history_data = array(
                'user_id'=>session('uid'),
                'auth_result'=>0,//待处理
                'opt_type'=>1,//提交审核
            );
            $UserHistoryModel->addInfo($history_data);

            $this->ajaxReturn( array('status'=>200,'msg'=>'提交成功','data'=>$role) );
        }else{
            $this->ajaxReturn( array('status'=>1005,'msg'=>'提交失败','data'=>'-1') );
        }
    }

    //企业用户认证信息提交（to:同时记录信息到企业history表）
    protected function addEnterpriseAuth($data){
            if(empty($data['enterprise_name'])){
                $this->ajaxReturn( array('status'=>1003,'msg'=>'请输入企业名称','data'=>'enterprise_name'));
               }
            if(empty($data['contacts'])){
                $this->ajaxReturn( array('status'=>1003,'msg'=>'请输入联系人姓名','data'=>'contacts'));
            }           
            if(empty($data['business_licence_no'])){
                $this->ajaxReturn( array('status'=>1003,'msg'=>'请输入营业执照编号','data'=>'business_licence_no'));
            }              
            if(empty($data['contacts_mobile'])){
                $this->ajaxReturn( array('status'=>1003,'msg'=>'请输入手机号码','data'=>'contacts_mobile'));
            }
            if(!checkMobile($data['contacts_mobile'])){
                $this->ajaxReturn( array('status'=>1003,'msg'=>'请输入正确的手机号码','data'=>'contacts_mobile'));
            }            
            
//            if(!empty($data['web_site']) && !checkDomain($data['web_site'])){
//                $this->ajaxReturn( array('status'=>1004,'msg'=>'官网地址格式不正确','data'=>null) );   
//            }
            
            $data['update_time'] = time();
            $enterpriseModel = M('Enterprises');
            if(isset($data['auth_id']) && $data['auth_id']){
                //更新
                $data['auth_fail_cause'] = '';
                $data['create_time'] = time();
                $insert_enterprise_num = $enterpriseModel->where('id='.$data['auth_id'])->save($data);
                if($insert_enterprise_num){
                    //更新用户审核状态
                    $usersModel = M('Users');
                    $user_data['user_auth_status'] = 1;
                    $user_data['auth_fail_cause'] = '';
                    $user_data['auth_type'] = 2; //企业认证
                    $user_data['auth_create_time'] = time();

                    $usersModel->where('enterprise_id='.$data['auth_id'])->save($user_data);
                    session('37degree_auth_status',1);
                    
                    $EnterpriseHistory = D('EnterpriseCheckHistory');
                    $history_data = array(
                        'enterprise_id'=>$insert_enterprise_num,
                        'auth_result'=>0,//待处理
                        'opt_type'=>4,//更新审核
                    );
                    $EnterpriseHistory->addInfo($history_data);

                    $this->ajaxReturn( array('status'=>200,'msg'=>'更新成功','data'=>$role) );
                }else{
                    $this->ajaxReturn( array('status'=>1005,'msg'=>'提交失败','data'=>'-1') );
                }
            }else{
                $data['create_time'] = $data['update_time'];
                $insert_enterprise_num = $enterpriseModel->data($data)->add();
                //更新users表中企业编号
                if($insert_enterprise_num){
                    $usersModel = M('Users');
                    $users['enterprise_id'] = $insert_enterprise_num;
                    $users['user_auth_status'] = 1 ;
                    $users['auth_type'] = 2; //企业认证
                    $users['auth_create_time'] = time();
                    
                    $user_where['user_email'] = $this->user_email;
                    $usersModel->where($user_where)->save($users);

                    $EnterpriseHistory = D('EnterpriseCheckHistory');
                    $history_data = array(
                        'enterprise_id'=>$insert_enterprise_num,
                        'auth_result'=>0,//待处理
                        'opt_type'=>1,//提交审核
                    );
                    $EnterpriseHistory->addInfo($history_data);

                    
                    session('37degree_auth_status',1);//认证提交
                    
                    $this->ajaxReturn( array('status'=>200,'msg'=>'提交成功','data'=>$role) );
                }else{
                    $this->ajaxReturn( array('status'=>1005,'msg'=>'提交失败','data'=>'-1') );
                }
            }

    }

    //请求网关添加api(*api状态为屏蔽状态)
    protected function curlPlatformWithAddapi($data){
       if(empty($data) || !isset($data['service_name_en']) || !isset($data['api_name_en'])) return array(); 
       
       if(substr($data['api_uri'], 0,1) != '/'){//同后台交互时，要求api_uri是以"/"起始
            $data['api_uri'] = "/".$data['api_uri'];
        }

       $param_data = array(
            'service'=>$data['service_name_en'],//*
            'api'=>$data['api_name_en'],//*
            'uri'=>$data['api_uri'],
            'disable' => 1,//屏蔽状态
        );

        $dmp_result = dmp_curl_post(C(AUTH_ADD_API),$param_data );
        $dm_data = json_decode($dmp_result['result'],true);

        return $dm_data;
         
    }

    //后台添加服务 (向大后台请求，****审核通过后触发****)
    protected function curlPlatformWithAddservice($data){
        $addr = array();
        $host_array = explode(",", $data['service_host']);
        foreach($host_array as $ho_key=>$ho_val){
            array_push($addr, $ho_val);
        }

       $param_data = array(
            'name'=>$data['service_name_en'],//*
            'proto'=>'http',//*
            'addr'=>json_decode($addr),//*
            'timeout'=>3000,
        );
        if(!empty($data['service_timeout'])) $param_data['timeout'] = $data['service_timeout'];

        $req_header = empty($data['service_request_heads'])?array():$data['service_request_heads'];
        $req_header[] = "Host:".$data['service_host'];
        $param_data['req_header'] = json_decode($req_header);

        if(!empty($data['service_response_heads'])){
            $param_data['resp_header'] = json_decode($data['service_response_heads']);
        }

        $url = "https://api.37degree.com/open/api_mgr_srv/service_add ";
        $dmp_result = dmp_curl_post($url,array('conf'=>json_encode($param_data)) );
        $dm_data = json_decode($dmp_result['data'],true);
        if($dmp_result['status']==200 && $dm_data['return_code ']==0){
           return true;
        }else{
           return false;
        } 

    }

    /**
    *@desc 
    */
    protected function cpage($count,$pagenum = 20,$map = array()){
        $Page  = new \Think\Page($count,$pagenum);// 实例化分页类 传入总记录数和每页显示的记录数
        $show  = $Page->show();// 分页显示输出

        //分页跳转的时候保证查询条件
        foreach($map as $key=>$val) {    
            $Page->parameter   .=   "$key=".urlencode($val).'&';
        }

        //$page->setConfig('header','个会员');

        return $show;
    }  

    //链接pgsql
    protected function conncetPgsql(){
        $conn_string  =  "host=".C(STATIC_HOST)." port=".C(STATIC_PORT)." dbname=".C(STATIC_DB_NAME)." user=".C(STATIC_DB_USER)." password=".C(STATIC_DB_PWD); 

        $dbconn = pg_connect($conn_string);
        if ($dbconn){
            return $dbconn;
        } else {
            pg_close($dbconn);
            return false;
            //$this->error('链接pg库失败');
        }

    }

    //根据sql语句获取监控数据记录
    protected function getMonitorDataWithSql($sql,$isAjax = false){
        $data = array();
        $pg_connect = $this->conncetPgsql();
        if($pg_connect===false){
            if($isAjax==true){
                $this->ajaxReturn( array('status'=>1003,'msg'=>'pg库链接失败','data'=>null) );
            }else{
                return false;
            }
        }
        // $monitorModel = D('Monitor');
        // $list = $monitorModel->allList();

        $result = pg_query($pg_connect,$sql);
        while($list = pg_fetch_object($result)){
            array_push($data, $list);
        }

        pg_close($pg_connect);
        return $data;
    }

    //添加服务时，请求后台
    protected function bgAddService($data){
        $params['proto'] = 'http';  // 必需 服务名称
        $params['name'] = $data['service_name_en']; // 必需 后端服务类型 目前支持http或者ice
        
        $params['addr'] = explode(",",$data['service_host']);           // 必需 后端服务地址 //"127.0.0.1:8000"
        
        if(!empty($data['service_timeout'])){
          $params['timeout'] = (int) $data['service_timeout'];        // 可选 超时时间 单位毫秒  
        }
        //$params['https'] = 0;          // 可选 是否是https 1为是 0为不是 默认为0
        //$params['disable'] = 0,        // 可选 是否临时屏蔽 1为屏蔽 0为不屏蔽 默认为0
        
        //$params['http_param'] = '',     // 可选 向后端服务请求时添加额外的param 仅proto为http时需要["req_key1:req_value1"],
        if(!empty($data['service_request_heads'])){
            $params['req_header'] = json_decode($data['service_request_heads'],true);     // 可选 向后端服务请求时添加额外的header 仅proto为http时需要["req_key1:req_value1"],
        }
        if(!empty($data['service_response_heads'])){
            $params['resp_header'] = json_decode($data['service_response_heads'],true);    // 可选 向客户端返回响应时添加额外的header  ["req_key1:req_value1"],
        }
        // $params['cnt_by_ret_num'] = '1',     // 可选 是否根据返回数据条数计费 1为是 0为不是 默认为0
        // $params['array_name'] = '',         // 可选 如果cnt_by_ret_num为1，则根据array_name取返回条数
        
        $param_array['conf'] = json_encode($params);
        $result = dmp_curl_post(C(AUTH_ADD_SERVICE),$param_array);
        return $result;
    }

    //修改服务时，请求后台更新服务
    protected function bgUpdateService($data){
        $params['proto'] = 'http';  // 必需 服务名称
        $params['name'] = $data['service_name_en']; // 必需 后端服务类型 目前支持http或者ice
        
        $params['addr'] = explode(",",$data['service_host']);           // 必需 后端服务地址 //"127.0.0.1:8000"
        
        if(!empty($data['service_timeout'])){
          $params['timeout'] = (int) $data['service_timeout'];        // 可选 超时时间 单位毫秒  
        }
        //$params['https'] = 0;          // 可选 是否是https 1为是 0为不是 默认为0
        //$params['disable'] = 0,        // 可选 是否临时屏蔽 1为屏蔽 0为不屏蔽 默认为0
        
        //$params['http_param'] = '',     // 可选 向后端服务请求时添加额外的param 仅proto为http时需要["req_key1:req_value1"],
        if(!empty($data['service_request_heads'])){
            $params['req_header'] = json_decode($data['service_request_heads'],true);     // 可选 向后端服务请求时添加额外的header 仅proto为http时需要["req_key1:req_value1"],
        }
        if(!empty($data['service_response_heads'])){
            $params['resp_header'] = json_decode($data['service_response_heads'],true);    // 可选 向客户端返回响应时添加额外的header  ["req_key1:req_value1"],
        }
        // $params['cnt_by_ret_num'] = '1',     // 可选 是否根据返回数据条数计费 1为是 0为不是 默认为0
        // $params['array_name'] = '',         // 可选 如果cnt_by_ret_num为1，则根据array_name取返回条数
        
        $param_array['conf'] = json_encode($params);
        $result = dmp_curl_post(C(AUTH_SERVICE_UPDATE),$param_array);
        return $result;    
    }
   
    //读取用户api的剩余次数，剩余时间
    protected function gatewaryInfo($list = array()){
        if(empty($list)) return null;
        $params['params'] = json_encode( $list );//服务名称

        $result = dmp_curl_post(C(AUTH_API_MGR_SRV),$params);
        
        if(isset($result['status']) && isset($result['result']) && $result['status']==200){
            $data = json_decode($result['result'],true);
            if(isset($data['data']['left']) ){
                $return = $data['data']['left'];
                return $return;
                // echo "<pre>";print_r($return);die; 
            }
               
        }

        return null;
    
    }

    //查询某api是否存在
    protected function existsApi($data){
        $params['service'] = $data['service'];//服务名称
        $params['api'] = $data['api'];//api名称

        $result = dmp_curl_post(C(AUTH_API_EXISTS),$params);

        return $result;
    }

    //查询服务是否存在
    protected function existsService($data){
        $params['service'] = $data['service'];//服务名称

        $result = dmp_curl_post(C(AUTH_SERVICE_EXISTS),$params);

        return $result;
    }

    //添加api时，请求后台
    protected function bgAddApi($data){
        $params['service'] = $data['service_name_en'];//服务名称
        $params['api'] = $data['api_name_en'];//api名称
        $params['uri'] = $data['api_uri'];//后端api uri

        $result = dmp_curl_post(C(AUTH_ADD_API),$params);

        //并且授权debug用户使用该api接口
        $this->bgUserWithApi($data['service_name_en'],$data['api_name_en']);
        
        return $result;
    }

    //授权debug用户使用api
    protected function bgUserWithApi($service_name_en,$api_name_en){ 
        $params['user'] = C(HTTP_BASIC_AUTH_DEBUG_USER);//用户名(debug用户)*
        $params['service'] = $service_name_en;//服务名称*
        $params['api'] = $api_name_en;//api名称*

        // $params['cnt_limit'] = $user_email;//是否有访问次数限制 1为有 0为无 默认为0
        $params['expire_time'] = -1;//访问过期时间 unixtime -1为永远不过期 默认为-1

        $result = dmp_curl_post(C(AUTH_ADD_USER_API),$params,$debug=true);
        return $result;
    }

    //授权用户对某个api访问权限（11）---AUTH_ADD_USER_API
    public function gatewayAuthadd($params = array()){
        /*
        参数名称    类型  是否必需    描述 
        user    string  是   用户名
        service     string  是   服务名称
        api     string  是   api名称
        rate_limit  int     否   是否有访问频率限制 大于0为每秒最大访问次数，0为无限制 默认为0
        cnt_limit   int     否   是否有访问次数限制 1为有 0为无 默认为0
        expire_time     int     否   访问过期时间 unixtime -1为永远不过期 默认为-1 
        */
        $return['status'] = 400;
        $return['msg'] = 'Null';
        $return['result'] = json_encode( array('return_code'=>'-4001405','return_msg'=>'缺少必要参数') );
        if(!is_array($params)){
            return $return;
        }
        if(!isset($params['user']) || !isset($params['service']) || !isset($params['api'])){
            return $return;
        }
        if(empty($params['user']) || empty($params['service']) || empty($params['api'])){
            return $return;
        }
        if(!isset($params['cnt_limit'])){
            $params['cnt_limit'] = 1;//有访问次数限制
        }
        $auth_url = C(AUTH_ADD_USER_API);
        $auth_result = dmp_curl_post($auth_url,$params);
        return $auth_result;
    }

    //取消用户对某个api访问权限（12）
    public function gatewayAuthdelete($params = array()){
        // 参数名称    类型  是否必需    描述
        // user    string  是   用户名
        // service     string  是   服务名称
        // api     string  是   api名称 
        
        /*$return['status'] = 400;
        $return['msg'] = 'Null';
        $return['result'] = array('return_code'=>'-4001405','return_msg'=>'缺少必要参数');
        if(!is_array($params)){
            return $return;
        }
        if(!isset($params['user']) || !isset($params['service']) || !isset($params['api'])){
            return $return;
        }
        if(empty($params['user']) || empty($params['service']) || empty($params['api'])){
            return $return;
        }
        $auth_url = C(AUTH_ADD_USER_API);
        $auth_result = dmp_curl_post($auth_url,$params);
        return $auth_result;
        */
    }

    //更新用户对某个api访问权限（13）----AUTH_UPDATE_USER_API
    public function gatewayAuthupdate($params = array()){
        // user    string  是   用户名
        // service     string  是   服务名称
        // api     string  是   api名称
        // rate_limit  int     否   是否有访问频率限制 大于0为每秒最大访问次数，0为无限制 默认为0
        // cnt_limit   int     否   是否有访问次数限制 1为有 0为无 默认为0
        // expire_time     int     否   访问过期时间 unixtime -1为永远不过期 默认为-1 

        $return['status'] = 400;
        $return['msg'] = 'Null';
        $return['result'] = array('return_code'=>'-4001405','return_msg'=>'缺少必要参数');
        if(!is_array($params)){
            return $return;
        }
        if(!isset($params['user']) || !isset($params['service']) || !isset($params['api'])){
            return $return;
        }
        if(empty($params['user']) || empty($params['service']) || empty($params['api'])){
            return $return;
        }
        if(!isset($params['cnt_limit']) || empty($params['cnt_limit'])){
            $params['cnt_limit'] = 1;//有访问次数限制
        }
        $auth_url = C(AUTH_UPDATE_USER_API);
        $auth_result = dmp_curl_post($auth_url,$params);
        return $auth_result;

    }

    //设置用户对某api消费限制条数（17）----AUTH_API_ORDER_VARY
    public function gatewayOrdervary($params = array()){
        // 参数名称    类型  是否必需    描述
        // user    string  是   用户名
        // service     string  是   服务名称
        // api     string  是   api名称
        // cnt     int     是   可消费数据条数 正数为增加 负数为减少 

        $return['status'] = 400;
        $return['msg'] = 'Null';
        $return['result'] = array('return_code'=>'-4001405','return_msg'=>'缺少必要参数');
        if(!is_array($params)){
            return $return;
        }
        if(!isset($params['user']) || !isset($params['service']) || !isset($params['api']) || !isset($params['cnt'])){
            return $return;
        }
        if(empty($params['user']) || empty($params['service']) || empty($params['api']) || empty($params['cnt'])){
            return $return;
        }

        $auth_url = C(AUTH_API_ORDER_VARY);
        $auth_result = dmp_curl_post($auth_url,$params);
        return $auth_result;

    }

    // 设置可消费数据条数接口  设置可消费数据条数, 在购买和退定时调用
    public function gatewayOrderSet($params = array()){
        // 参数名称    类型  是否必需    描述
        // user    string  是   用户名
        // service     string  是   服务名称
        // api     string  是   api名称
        // cnt     int     是   可消费数据条数 

        $return['status'] = 400;
        $return['msg'] = 'Null';
        $return['result'] = array('return_code'=>'-4001405','return_msg'=>'缺少必要参数');
        if(!is_array($params)){
            return $return;
        }
        if(!isset($params['user']) || !isset($params['service']) || !isset($params['api']) || !isset($params['cnt'])){
            return $return;
        }
        if(empty($params['user']) || empty($params['service']) || empty($params['api']) || empty($params['cnt'])){
            return $return;
        }

        $auth_url = C(AUTH_API_ORDER_SET);
        $auth_result = dmp_curl_post($auth_url,$params);
        return $auth_result;
    }

    //更新用户对某api消费限制条数(19)----AUTH_API_USED_VARY
    public function gatewayUsedvary($params = array()){
        // 参数名称    类型  是否必需    描述
        // user    string  是   用户名
        // service     string  是   服务名称
        // api     string  是   api名称
        // cnt     int     是   改变已消费数据条数 负数为减少

        $return['status'] = 400;
        $return['msg'] = 'Null';
        $return['result'] = array('return_code'=>'-4001405','return_msg'=>'缺少必要参数');
        if(!is_array($params)){
            return $return;
        }
        if(!isset($params['user']) || !isset($params['service']) || !isset($params['api']) || !isset($params['cnt'])){
            return $return;
        }
        if(empty($params['user']) || empty($params['service']) || empty($params['api']) || empty($params['cnt'])){
            return $return;
        }
        
        $auth_url = C(AUTH_API_USED_VARY);
        $auth_result = dmp_curl_post($auth_url,$params);
        return $auth_result;
    }

    //回写api镜像表记录到api表
    public function imageBacktoApi($api_id = null){
        if(empty($api_id)) return false;

        $apiModel = M();

        $select_sql = "select * from ".$this->api_image_table." where api_id=".$api_id;
        $api_info = $apiModel->query($select_sql);
        if(empty($api_info)) return false;

        return $apiModel->table($this->api_table)->where('api_id='.$api_id)->save($api_info[0]);
    }

}
